﻿/**
 * @file templatestylebutton.h
 * @author huangxb
 * @email 18228033207@163.com
 * @date 2024.04.26
 * @license MIT License
 * @brief 模板样式button.
 *
 * @htmlonly
 * <span style="font-weight: bold">History</span>
 * @endhtmlonly
 * Version|Auther|Date|Describe
 * ------|----|------|--------
 * V1.0|huangxb|2024.04.26|创建
 */
#ifndef TEMPLATESTYLEBUTTON_H
#define TEMPLATESTYLEBUTTON_H

/* 库头文件 */
#include <QPushButton>

/** @brief 模板样式button */
class CTemplateStyleButton : public QPushButton
{
    Q_OBJECT

private:
    QString m_strTemplateName; /**< 模板样式名称 */
    QString m_strTemplateImage; /**< 模板样式图片路径 */
    QString m_strText; /**< 按钮文本 */

    QScopedPointer<QPixmap> m_spPixmapTemplate; /**< 模板样式对应的图片 */

public:
    explicit CTemplateStyleButton(QWidget *parent = nullptr);
    explicit CTemplateStyleButton(const QString &text, QWidget *parent = nullptr);

    /**
     * @brief 设置模板样式.
     * @param[in] strTemplateName 名称
     * @param[in] strTemplateImage 图片路径
     */
    void SetTemplateStyle(const QString& strTemplateName, const QString& strTemplateImage);

    /**
     * @brief 设置按钮文本.
     * @param[in] strText 文本
     */
    void setText(const QString &strText);

    /**
     * @brief 获取按钮文本.
     * @return 文本
     */
    QString text() const;

protected:
    /** @see QPushButton#paintEvent */
    void paintEvent(QPaintEvent* event) override;
};

#endif // TEMPLATESTYLEBUTTON_H
